package top.chaileilei.zookeeper.curator;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.curator.utils.ZKPaths;
import org.apache.zookeeper.ZooKeeper;

/**
 * @Description 构建znode路径，递归创建和删除节点
 * @Time 2019/2/12
 * @Author CHAILEILEI
 * @Weblog www.chaileilei.top
 */
public class ZKPathsDemo {
    private static String path = "/hjh";
    private static CuratorFramework client = CuratorFrameworkFactory.builder()
            .connectString("119.27.189.174:2181")
            .sessionTimeoutMs(5000)
            .retryPolicy(new ExponentialBackoffRetry(1000, 3))
            .build();


    public static void main(String[] args) throws Exception {
        zkPaths();
    }

    public static void zkPaths() throws Exception {
        client.start();
        ZooKeeper zooKeeper = client.getZookeeperClient().getZooKeeper();
        System.out.println(zooKeeper.getState());
        String s = ZKPaths.fixForNamespace(path, "/dghre");
        System.out.println(s);
        System.out.println(ZKPaths.makePath(path, "sub"));
        System.out.println( ZKPaths.getNodeFromPath( "/curator_zkpath_sample/sub1" ) );
        ZKPaths.PathAndNode pn = ZKPaths.getPathAndNode( "/curator_zkpath_sample/sub1" );
        System.out.println(pn.getPath());
        System.out.println(pn.getNode());

        String dir1 = path + "/child1";
        String dir2 = path + "/child2";
        ZKPaths.mkdirs(zooKeeper, dir1);
        ZKPaths.mkdirs(zooKeeper, dir2);
        System.out.println(ZKPaths.getSortedChildren( zooKeeper, path ));

        ZKPaths.deleteChildren(client.getZookeeperClient().getZooKeeper(), path, true);


    }

}
